1. Statement of the Technical Field
The present invention relates to the field of enterprise computing and more particularly to the use of delegate logic to separate program logic from presentation logic in an enterprise application.
2. Description of the Related Art
Traditional client server application mix presentation and business logic in the client tier while the server tier provides backend data storage and server side business logic. Consequently, client server applications typically cannot scale within the enterprise given the difficulty in maintaining both the client tier and the server tier. Specifically, changes to the presentation layer of an application require the modification of the client side application which can impact the integrity of the business logic within the client tier. Similarly, changes to the business logic of the client can jeopardize the integrity of the presentation code in the client tier. Developing for the client tier also can be problematic where logic developers further develop the presentation layer, or where human factors designers develop for the logic layer of the application in the client tier.
To force a separation of the presentation and logic layers as is preferred among contemporary computer scientists, server page technologies have become the preferred vehicle for multi-tier application. Server page technologies release the client tier from the responsibility of processing logic for rendering the presentation layer. Moreover, server pages largely separate presentation layer logic from the static elements of the presentation layer so that user interface designers can perform changes to the static elements of the presentation layer without breaching the integrity of the programmatic elements of the presentation layer.
Notwithstanding, presentation-tier components often directly interact with business logic. The direct interaction between the presentation tier can expose the underlying implementation details of the application programming interface (API) for the business logic to the presentation tier. As a result, the presentation tier components can become vulnerable to changes in the implementation of the business logic. Specifically, when the implementation of the business logic changes, so too must the exposed implementation code in the presentation tier.
Also, network performance can be affected when presentation tier components directly interact with business logic because intermediate caching or aggregating can be absent from the equation. Lastly, an exposed API to the business logic can force the client to directly deal with networking issues associated with the distributed nature of bean technologies. Consequently, the business delegate model has been proposed to inject and intermediary between the presentation tier and the business logic of an enterprise application.
In the business delegate model, a business delegate acts as a client-side business abstraction providing an abstraction of the implementation of the underlying of the business logic. Therefore, using a business delegate reduces the coupling so that clients can be shielded from the possible volatility in the implementation of the business logic API. In particular, when the business logic API or underlying business logic changes, the number of changes required in the presentation tier or other tiers which utilize the business delegate can be minimized. As yet an additional advantage, the business delegate can cache results and references to remote business logic thereby improving network performance.
Nevertheless, the business delegate model is not without its own challenges. For one, in many enterprise applications the business logic of the enterprise application can be invoked from a variety of different types of environments. These disparate environments can range from the server environment to a remote client environment, to a remote, off-line client environment. The preferred behavior of a business delegate can vary based upon from which environment the business logic has been invoked. Yet, the business delegate model does not permit a variability in behavior and assumes a single behavior regardless of calling environment.